package tech.heptagram.staff.service;

import java.util.List;

import tech.heptagram.staff.model.ProcessRecord;

public interface ProcessRecordService {
    /**
     * 添加审批记录信息
     *
     * @param vo
     */
    void save(ProcessRecord vo);

    /**
     * 修改申请状态到成功
     *
     * @param bpmsProcessId 申请实体ID
     */
    void updateStateToStart(String bpmsProcessId);

    /**
     * 修改申请状态到撤销
     */
    void updateStateToTerminate(String bpmsProcessId);

    /**
     * 修改申请状态道结束
     *
     * @param bpmsProcessId     申请实体ID
     * @param applicationResult 申请结果，1，成功，2失败
     */
    void updateStateToFinish(String bpmsProcessId, Integer applicationResult);

    /**
     * 修改申请拒绝消息
     *
     * @param bpmsProcessId 申请实体ID
     * @param rejectMessage 拒绝消息
     */
    void updateRejectMessage(String bpmsProcessId, String rejectMessage);

    /**
     * 通过指定条件查询审批记录信息
     *
     * @param bpmsProcessId 申请实体ID
     * @return
     */
    ProcessRecord findByBpmsProcessId(String bpmsProcessId);

    /**
     * 查询员工对某一种类的申请在某种状态的信息
     *
     * @param staffCode    员工编码
     * @param processType  申请类型 参见bpms_process表id
     * @param processState 申请状态
     * @return
     */
    List<ProcessRecord> findByUserProcessTypeAndState(String staffCode, Integer processType, Integer processState);
}
